home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 February / OpenLinux 2.3 CD.iso / live / usr / share / vim / syntax / idl.vim < prev    next >
Encoding:
Text File  |  1999-08-10  |  9.6 KB  |  189 lines

  1. " Vim syntax file
  2. " Language:    IDL (Interface Description Language)
  3. " Maintainer:    Jody Goldberg <jodyg@idt.net>
  4. " Last change:    1997 Nov 20
  5.  
  6. " This is an experiment.  IDL's structure is simple enough to permit a full
  7. " grammar based approach to rather than using a few heuristics.  The result
  8. " is large and somewhat repetative but seems to work.
  9.  
  10. " Remove any old syntax stuff hanging around
  11. syn clear
  12.  
  13. " Misc basic
  14. syn match    idlId        contained "[a-zA-Z][a-zA-Z0-9_]*"
  15. syn match    idlSemiColon    contained ";"
  16. syn match    idlCommaArg    contained ","            skipempty skipwhite nextgroup=idlSimpDecl
  17. syn region    idlArraySize1    contained start=:\[: end=:\]:    skipempty skipwhite nextgroup=idlArraySize1,idlSemiColon,idlCommaArg contains=idlArraySize1,idlLiteral
  18. syn match   idlSimpDecl     contained "[a-zA-Z][a-zA-Z0-9_]*"    skipempty skipwhite nextgroup=idlSemiColon,idlCommaArg,idlArraySize1
  19. syn region  idlSting     contained start=+"+  skip=+\\\(\\\\\)*"+  end=+"+
  20. syn match   idlLiteral     contained "[1-9]\d*\(\.\d*\)\="
  21. syn match   idlLiteral     contained "\.\d\+"
  22. syn keyword idlLiteral     contained TRUE FALSE
  23.  
  24. " Comments
  25. syn keyword idlTodo contained    TODO FIXME XXX
  26. syn region idlComment        start="/\*"  end="\*/" contains=idlTodo
  27. syn match  idlComment        "//.*" contains=idlTodo
  28. syn match  idlCommentError    "\*/"
  29.  
  30. " C style Preprocessor
  31. syn region idlIncluded contained start=+"+  skip=+\\\(\\\\\)*"+  end=+"+
  32. syn match  idlIncluded contained "<[^>]*>"
  33. syn match  idlInclude        "^[ \t]*#[ \t]*include\>[ \t]*["<]" contains=idlIncluded, idlString
  34. syn region idlPreCondit    start="^[ \t]*#[ \t]*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)"  skip="\\$"  end="$" contains=idlComment,idlCommentError
  35. syn region idlDefine    start="^[ \t]*#[ \t]*\(define\>\|undef\>\)" skip="\\$" end="$" contains=idlLiteral, idlString
  36.  
  37. " Constants
  38. syn keyword idlConst    const    skipempty skipwhite nextgroup=idlBaseType,idlBaseTypeInt
  39.  
  40. " Attribute
  41. syn keyword idlROAttr    readonly    skipempty skipwhite nextgroup=idlAttr
  42. syn keyword idlAttr    attribute    skipempty skipwhite nextgroup=idlBaseTypeInt,idlBaseType
  43.  
  44. " Types
  45. syn region  idlD4    contained start="<" end=">"    skipempty skipwhite nextgroup=idlSimpDecl    contains=idlSeqType,idlBaseTypeInt,idlBaseType,idlLiteral
  46. syn keyword idlSeqType    contained sequence        skipempty skipwhite nextgroup=idlD4
  47. syn keyword idlBaseType        contained    float double char boolean octet any    skipempty skipwhite nextgroup=idlSimpDecl
  48. syn keyword idlBaseTypeInt    contained    short long        skipempty skipwhite nextgroup=idlSimpDecl
  49. syn keyword idlBaseType        contained    unsigned        skipempty skipwhite nextgroup=idlBaseTypeInt
  50. syn region  idlD1        contained    start="<" end=">"    skipempty skipwhite nextgroup=idlSimpDecl    contains=idlString,idlLiteral
  51. syn keyword idlBaseType        contained    string    skipempty skipwhite nextgroup=idlD1,idlSimpDecl
  52. syn match   idlBaseType        contained    "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*"    skipempty skipwhite nextgroup=idlSimpDecl
  53.  
  54. " Modules
  55. syn region  idlModuleContent contained start="{" end="}"    skipempty skipwhite nextgroup=idlSemiColon contains=idlUnion,idlStruct,idlEnum,idlInterface,idlComment,idlTypedef,idlConst,idlException,idlModule
  56. syn match   idlModuleName contained    "[a-zA-Z0-9_]\+"    skipempty skipwhite nextgroup=idlModuleContent,idlSemiColon
  57. syn keyword idlModule            module            skipempty skipwhite nextgroup=idlModuleName
  58.  
  59. " Interfaces
  60. syn region  idlInterfaceContent contained start="{" end="}"    skipempty skipwhite nextgroup=idlSemiColon contains=idlUnion,idlStruct,idlEnum,idlComment,idlROAttr,idlAttr,idlOp,idlOneWayOp,idlException,idlConst,idlTypedef
  61. syn match   idlInheritFrom2 contained "," skipempty skipwhite nextgroup=idlInheritFrom
  62. syn match idlInheritFrom contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlInheritFrom2,idlInterfaceContent
  63. syn match idlInherit contained    ":"        skipempty skipwhite nextgroup=idlInheritFrom
  64. syn match   idlInterfaceName contained    "[a-zA-Z0-9_]\+"    skipempty skipwhite nextgroup=idlInterfaceContent,idlInherit,idlSemiColon
  65. syn keyword idlInterface        interface        skipempty skipwhite nextgroup=idlInterfaceName
  66.  
  67.  
  68. " Raises
  69. syn keyword idlRaises    contained raises    skipempty skipwhite nextgroup=idlRaises,idlContext,idlSemiColon
  70.  
  71. " Context
  72. syn keyword idlContext    contained context    skipempty skipwhite nextgroup=idlRaises,idlContext,idlSemiColon
  73.  
  74. " Operation
  75. syn match   idlParmList    contained "," skipempty skipwhite nextgroup=idlOpParms
  76. syn region  idlArraySize contained start="\[" end="\]"    skipempty skipwhite nextgroup=idlArraySize,idlParmList contains=idlArraySize,idlLiteral
  77. syn match   idlParmName contained "[a-zA-Z0-9_]\+"    skipempty skipwhite nextgroup=idlParmList, idlArraySize
  78. syn keyword idlParmInt    contained short long        skipempty skipwhite nextgroup=idlParmName
  79. syn keyword idlParmType    contained unsigned        skipempty skipwhite nextgroup=idlParmInt
  80. syn region  idlD3    contained start="<" end=">"    skipempty skipwhite nextgroup=idlParmName    contains=idlString,idlLiteral
  81. syn keyword idlParmType    contained string        skipempty skipwhite nextgroup=idlD3,idlParmName
  82. syn keyword idlParmType    contained void float double char boolean octet any      skipempty skipwhite nextgroup=idlParmName
  83. syn match   idlParmType    contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlParmName
  84. syn keyword idlOpParms    contained in out inout        skipempty skipwhite nextgroup=idlParmType
  85.  
  86. syn region idlOpContents contained start="(" end=")"    skipempty skipwhite nextgroup=idlRaises,idlContext,idlSemiColon contains=idlOpParms
  87. syn match   idlOpName   contained "[a-zA-Z0-9_]\+"    skipempty skipwhite nextgroup=idlOpContents
  88. syn keyword idlOpInt    contained short long        skipempty skipwhite nextgroup=idlOpName
  89. syn region  idlD2    contained start="<" end=">"    skipempty skipwhite nextgroup=idlOpName    contains=idlString,idlLiteral
  90. syn keyword idlOp    contained unsigned        skipempty skipwhite nextgroup=idlOpInt
  91. syn keyword idlOp    contained string        skipempty skipwhite nextgroup=idlD2,idlOpName
  92. syn keyword idlOp    contained void float double char boolean octet any        skipempty skipwhite nextgroup=idlOpName
  93. syn match   idlOp    contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*"    skipempty skipwhite nextgroup=idlOpName
  94. syn keyword idlOp    contained void            skipempty skipwhite nextgroup=idlOpName
  95. syn keyword idlOneWayOp    contained oneway        skipempty skipwhite nextgroup=idOp
  96.  
  97. " Enum
  98. syn region  idlEnumContents contained start="{" end="}"        skipempty skipwhite nextgroup=idlSemiColon, idlSimpDecl contains=idlId
  99. syn match   idlEnumName contained    "[a-zA-Z0-9_]\+"    skipempty skipwhite nextgroup=idlEnumContents
  100. syn keyword idlEnum            enum            skipempty skipwhite nextgroup=idlEnumName
  101.  
  102. " Typedef
  103. syn keyword idlTypedef            typedef            skipempty skipwhite nextgroup=idlBaseType, idlBaseTypeInt, idlSeqType
  104.  
  105. " Struct
  106. syn region  idlStructContent contained start="{" end="}" skipempty skipwhite nextgroup=idlSemiColon, idlSimpDecl    contains=idlBaseType, idlBaseTypeInt, idlSeqType,idlComment, idlEnum, idlUnion
  107. syn match   idlStructName contained    "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlStructContent
  108. syn keyword idlStruct            struct         skipempty skipwhite nextgroup=idlStructName
  109.  
  110. " Exception
  111. syn keyword idlException exception skipempty skipwhite nextgroup=idlStructName
  112.  
  113. " Union
  114. syn match   idlColon contained ":"    skipempty skipwhite nextgroup=idlCase, idlSeqType,idlBaseType,idlBaseTypeInt
  115. syn region  idlCaseLabel contained start="" skip="::" end=":"me=e-1    skipempty skipwhite nextgroup=idlColon contains=idlLiteral,idlString
  116. syn keyword idlCase        contained case                skipempty skipwhite nextgroup=idlCaseLabel
  117. syn keyword idlCase        contained default            skipempty skipwhite nextgroup=idlColon
  118. syn region  idlUnionContent    contained start="{" end="}"        skipempty skipwhite nextgroup=idlSemiColon,idlSimpDecl    contains=idlCase
  119. syn region  idlSwitchType    contained start="(" end=")"        skipempty skipwhite nextgroup=idlUnionContent
  120. syn keyword idlUnionSwitch    contained switch            skipempty skipwhite nextgroup=idlSwitchType
  121. syn match   idlUnionName    contained "[a-zA-Z0-9_]\+"        skipempty skipwhite nextgroup=idlUnionSwitch
  122. syn keyword idlUnion        union                skipempty skipwhite nextgroup=idlUnionName
  123.  
  124. syn sync lines=200
  125.  
  126. if !exists("did_idl_syntax_inits")
  127.   let did_idl_syntax_inits = 1
  128.   " The default methods for highlighting.  Can be overridden later
  129.   hi link idlInclude    Include
  130.   hi link idlPreProc    PreProc
  131.   hi link idlPreCondit    PreCondit
  132.   hi link idlDefine    Macro
  133.   hi link idlIncluded    String
  134.   hi link idlString    String
  135.   hi link idlComment    Comment
  136.   hi link idlTodo    Todo
  137.   hi link idlLiteral    Number
  138.  
  139.   hi link idlModule    Keyword
  140.   hi link idlInterface    Keyword
  141.   hi link idlEnum    Keyword
  142.   hi link idlStruct    Keyword
  143.   hi link idlUnion    Keyword
  144.   hi link idlTypedef    Keyword
  145.   hi link idlException    Keyword
  146.  
  147.   hi link idlModuleName        Typedef
  148.   hi link idlInterfaceName    Typedef
  149.   hi link idlEnumName        Typedef
  150.   hi link idlStructName        Typedef
  151.   hi link idlUnionName        Typedef
  152.  
  153.   hi link idlBaseTypeInt    idlType
  154.   hi link idlBaseType        idlType
  155.   hi link idlSeqType        idlType
  156.   hi link idlD1            Paren
  157.   hi link idlD2            Paren
  158.   hi link idlD3            Paren
  159.   hi link idlD4            Paren
  160.   "hi link idlArraySize        Paren
  161.   "hi link idlArraySize1    Paren
  162.   hi link idlModuleContent    Paren
  163.   hi link idlUnionContent    Paren
  164.   hi link idlStructContent    Paren
  165.   hi link idlEnumContents    Paren
  166.   hi link idlInterfaceContent    Paren
  167.  
  168.   hi link idlSimpDecl        Identifier
  169.   hi link idlROAttr        StorageClass
  170.   hi link idlAttr        Keyword
  171.   hi link idlConst        StorageClass
  172.  
  173.   hi link idlOneWayOp    StorageClass
  174.   hi link idlOp        idlType
  175.   hi link idlParmType    idlType
  176.   hi link idlOpName    Function
  177.   hi link idlOpParms    StorageClass
  178.   hi link idlParmName    Identifier
  179.   hi link idlInheritFrom    Identifier
  180.  
  181.   hi link idlId        Constant
  182.   "hi link idlCase    Keyword
  183.   hi link idlCaseLabel    Constant
  184. endif
  185.  
  186. let b:current_syntax = "idl"
  187.  
  188. " vim: ts=8
  189.